#!/bin/bash
# Dieses Script synchronisiert die angebenen Ordner mit den Verzeichnissen einer Server-Freigabe

# Variabeln
USER="bluna"
PRF="test"
LOG="$HOME/.unison/$PRF.log"
CONFLICT=""
MOUNTPOINT="/media/ElGrande/public"
LOCK="/media/ElGrande/public/06_Sync/$USER.lock"

# Variabeln fix
UNISON="/usr/bin/unison"; MOUNT="/bin/mount"; FGREP="/bin/fgrep"; ECHO="/bin/echo"
DATE="/bin/date"; RM="/bin/rm"

#Date in Logfile schreiben
$DATE > $LOG

# Test ob Sync-Verzeichnis gemounted ist
MOUNTED=$($MOUNT | $FGREP "$MOUNTPOINT");
if [ -z "$MOUNTPOINT" ] || [ -n "$MOUNTED" ]; then
# Wenn ja 
#    Pruefen ob lock-Datei angelegt ist
    if [ -f "$LOCK" ]; then
		# Wenn ja, dann Meldung
		$ECHO "Problem: Datenstand wir gerade von einem zweiten Rechner synchronisiert. Es wird jetzt nichts getan." >> $LOG
        $ECHO "Problem: Datenstand wir gerade von einem zweiten Rechner synchronisiert. Es wird jetzt nichts getan."
        
    else
		# Wenn nein -> Datei anlgen
        $DATE > $LOCK
        # Sync-Befehl im batch-mode und text-mode absetzen
        $UNISON $PRF -batch -ui 'text' > $LOG 2>&1
        CONFLICT=$?
        $ECHO "$CONFLICT"
        # Wenn Fehler ([ &? -ne 0]) dann Meldung und lockdatei loeschen
        if [ $CONFLICT -eq 0 ]; then
            $ECHO "successful synchronization; everything is up-to-date now."
        fi
        if [ $CONFLICT -eq 1 ]; then
            $ECHO "some files were skipped, but all file transfers were successful."
        fi
        if [ $CONFLICT -eq 2 ]; then
            $ECHO "non-fatal failures occurred during file transfer."
        fi
        if [ $CONFLICT -eq 3 ]; then
            $ECHO "a fatal error occurred, or the execution was interrupted."
        fi

        if [ $CONFLICT -ne 0 ]; then
            $UNISON $PRF -ui 'graphic' 
        fi
        # Löschen der Lock-Datei
        $RM $LOCK
    fi
    
# Sonst Meldung
else
   $ECHO "$MOUNTPOINT nicht gemounted. Es wird jetzt nichts synchronisiert." >> $LOG
   $ECHO "$MOUNTPOINT nicht gemounted. Es wird jetzt nichts synchronisiert."
fi
exit 0
